A hard disk drive often has an associated disk cache that is used to speed up access to data on the disk since the access speed of the disk cache is significantly faster than the access speed of the hard disk drive. A disk cache is a storage device that is often a non-volatile storage device such as a flash memory. It is typically implemented by storing the most recently accessed data. When a computer needs to access new data the disk cache is first checked before attempting to read the data from the disk drive. Since data access from the cache is significantly faster than data access from the disk drive, disk caching can significantly increase performance.
Typical flash memory devices are formed from a number of individual storage elements, where each storage element consists of a memory cell that includes a transistor and a charge storage area. The presence or absence of an electronic charge in the charge storage area of a cell can be used to store a logic “1” or a logic “0” in the cell.
In general, there are a number of operations that are performed within flash memory devices. The most common such operations are the ERASE, PROGRAM, and READ operations. During an ERASE operation, the logical bit stored in a given memory cell is set to a logical “0”, which—in the example of discussion—corresponds to the absence of a substantial electric charge in the memory cell's charge storage area. Because of the physical nature of most NAND flash memory devices, the ERASE operation is performed on a block basis. Thus, anytime one desires to erase the data in a given memory cell within a given block, one will also erase the data in all other memory cells within that block.
After a block of flash memory is erased, the individual data within the device can be programmed. The PROGRAM operation involves the writing of data into a memory cell that has been previously ERASED. The PROGRAM operation is performed in such a way that all of the bits being programmed (typically all of the bits within a single page) will be programmed to have the desired “1” or “0” levels at the same time. Once pages of flash memory device are programmed, they can be read. In general, the READ operation involves the reading of the logical data stored in the memory cells of a page of flash data.
Block ERASE operations are expensive in terms of power and performance because they are often preceded by a number of READ operations and PROGRAM operations as valid data is moved around the flash memory in preparation for a block erase operation. In addition, there is a fixed limit on the number of erases a flash cell (the smallest unit of flash memory) can handle, beyond which the flash cell becomes unreliable. Thus, the performance, power and reliability of flash memory can become a concern as the number of invalidations grows.